home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / s85xx / s8504b.d64 / shapes demo2 (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  8KB  |  219 lines

  1. 10 REM        SHAPES DEMO
  2. 20 :
  3. 30 REM     RICHARD L. RYLANDER    11/23/84 (REVISED 1/20/85 TO ADD LABELING)
  4. 40 :
  5. 50 GR=49378    :REM GRAPHIK MODUS
  6. 60 TX=49411    :REM TEXT MODUS
  7. 70 :
  8. 80 LB=893      :REM LINKE GRENZE
  9. 90 RB=894      :REM RECHTE GRENZE
  10. 100 UB=895     :REM OBERE GRENZE
  11. 110 DB=896     :REM UNTERE GRENZE
  12. 120 :
  13. 130 REM   FLAGS FUER VERSCHIEDENE GRAFIKMODI
  14. 140 :
  15. 150 SH=838     :REM SCHATTIERUNG: 0=RANDOM, 1=HALBTON
  16. 160 SC=839     :REM SKALIERUNG:0=NORMAL (1:1), 1=SKAL. (4:3) FUER DARSTELLUNG
  17. 170 LT=898     :REM LICHTEINFALL: 0=NORMAL, 1=VON HINTEN BELEUCHTET
  18. 180 :
  19. 190 BO=53280   :REM  RAHMENFARBE
  20. 200 :
  21. 210 REM   FUNKTIONSADRESSEN
  22. 220 :
  23. 230 CL=51979   :REM BITMAP BEREICH LOESCHEN
  24. 240 CO=52001   :REM COLORBEREICH FUELLEN
  25. 250 :
  26. 260 SP=52119   :REM  SPHERE
  27. 270 TR=52141   :REM  RING VON OBEN
  28. 280 VC=52150   :REM  ZYLINDER (VERTIKALE ACHSE)
  29. 290 HC=52153   :REM  ZYLINDER (HORIZONTALE ACHSE)
  30. 300 VT=52186   :REM  RINGSCHNITT (VERTIKALE ACHSE)
  31. 310 HT=52189   :REM  RINGSCHNITT (AXIS HORIZONTALE ACHSE)
  32. 320 VS=52203   :REM  SPULE (VERTIKALE ACHSE)
  33. 330 HS=52206   :REM  SPULE (HORIZONTALE ACHSE)
  34. 340 :
  35. 350 REM  EINZELNE SHAPES ZEICHNEN
  36. 360 :
  37. 370 POKE SH,1 :REM HALBTONSCHATTIERUNG
  38. 380 POKE SC,1 :REM SKALIERUNG
  39. 390 POKE LT,0 :REM NORMALBELEUCHTUNG
  40. 400 SYS(CL)   :REM BILDSCHIRM LOESCHEN
  41. 410 SYS(CO),17*11+1  :REM FARBKOMBINATION - DUNKELGRAU (11) WEISSE PUNKTE (1)
  42. 414 REM  AUF DEN MEISTEN FARBMONITOREN
  43. 420 POKE BO,1 :REM WEISSER RAHMEN
  44. 430 SYS(GR)   :REM GRAFIK EINSCHALTEN
  45. 432 RW=12:CM=14:MD=1:A$="SHAPES DEMO":GOSUB 1900:REM  TITEL
  46. 434 X1=110:Y1=120:X2=210:Y2=120:BC=1:DC=7:GOSUB 1700:REM  COLOR TITEL
  47. 440 POKE LB,38:POKE RB,38:POKE UB,38:POKE DB,38       :REM SHAPE FENSTER
  48. 450 SYS(SP),40,199,38
  49. 455 RW=9:CM=2:MD=1:A$="KUGEL":GOSUB1900
  50. 460 SYS(HC),120,199,38,38
  51. 465 CM=11:A$="H-ZYLND.":GOSUB1900
  52. 470 SYS(VC),200,199 :REM VOREINGESTELLTE PARAMETER WERDEN BENUTZT
  53. 475 CM=21:A$="V-ZYLIND.":GOSUB1900
  54. 480 SYS(TR),280,199,15,38
  55. 485 CM=32:A$="  RING":GOSUB1900
  56. 490 SYS(VT),40,64
  57. 495 RW=23:CM=1:A$="H-RING":GOSUB1900
  58. 500 SYS(HT),120,64
  59. 505 CM=11:A$="V-RING":GOSUB1900
  60. 510 SYS(HS),200,64,5,100
  61. 515 CM=22:A$="H-SPULE":GOSUB1900
  62. 520 SYS(VS),280,64
  63. 525 CM=32:A$="V-SPULE":GOSUB1900
  64. 530 POKE 198,0:WAIT 198,1:POKE 198,0
  65. 540 REM  AUF TASTE WARTEN
  66. 550 :
  67. 560 REM  ZWEI "POKALE", EINER MIT HALBTON-, DER ANDERE MIT "RANDOM"-SCHATTIERUNG
  68. 570 :
  69. 580 SYS(CL):SYS(CO),16*11+1
  70. 582 RW=14:CM=14:A$="VERGLEICH":GOSUB 1900:RW=15:CM=16:A$="ZWEIER":GOSUB 1900
  71. 584 RW=16:CM=12:A$="SCHATTIERUNGEN":GOSUB 1900:RW=18:CM=14:A$="<-- HALBTON"
  72. 586 GOSUB 1900:RW=20:CM=15:A$="RANDOM -->":GOSUB 1900
  73. 590 POKE LB,255:POKE RB,255:POKE UB,49:POKE DB,255: REM AN DEN OBEREN RAND
  74. 600 SYS(SP),80,190,80
  75. 610 POKE UB,51:POKE DB,51: REM WEITERN SPRITE-TEIL ANHAENGEN
  76. 620 SYS(VS),80,69,10,130
  77. 630 POKE DB,9:POKE UB,8
  78. 640 SYS(VT),80,9,25,45
  79. 650 POKE SH,0  :REM AUF RANDOM SCHATTIERUNG UMSCHALTEN
  80. 660 POKE LB,255:POKE RB,255:POKE UB,49:POKE DB,255
  81. 670 SYS(SP),240,190,80
  82. 680 POKE UB,51:POKE DB,51
  83. 690 SYS(VS),240,69,10,130
  84. 700 POKE DB,9:POKE UB,8
  85. 710 SYS(VT),240,9,25,45
  86. 720 POKE 198,0:WAIT 198,1:POKE 198,0
  87. 740 :
  88. 750 REM  ZEICHNE "WEIN" SZENE
  89. 760 POKE LT,1 :REM HINTERGRUNGBELEUCHTUNG
  90. 770 POKE SH,1 :REM HALBTONSCHATTIERUNG FUER FLASCHENETIKETT
  91. 780 SYS(CO):SYS(CL),255: REM BITMAP FUELLEN
  92. 790 POKE BO,0 : REM SCHWARZER HINTERGRUND
  93. 792 RW=0:CM=0:MD=2:A$="ZEICHENEN MIT":GOSUB 1900:RW=1:CM=0:A$="RUECKBELEUCHTUNG"
  94. 794 GOSUB 1900:RW=2:CM=0:A$="GEGEN GESETZTEN":GOSUB 1900
  95. 796 RW=3:CM=0:A$="HINTERGRUND":GOSUB 1900
  96. 798 RW=1:CM=26:A$="FARBEN WERDEN":GOSUB 1900
  97. 800 RW=2:CM=26:A$="NACHGEZEICHNET":GOSUB1900
  98. 810 REM  ZEICHNE FLASCHE
  99. 820 POKE UB,0:POKE DB,255:POKE LB,255:POKERB,255
  100. 830 SYS(VT),150,10,30,50
  101. 840 POKE UB,255:SYS(VC),150,70,50,60
  102. 850 POKE DB,0:SYS(VT),150,130,6,50
  103. 860 POKE DB,55:POKE UB,0:SYS(VS),150,204,15,181
  104. 870 POKE UB,255:SYS(VC),150,221,16,17
  105. 880 :
  106. 890 REM  ZEICHENE WEINGLAS
  107. 900 POKE UB,20:SYS(SP),80,120,60
  108. 910 POKE UB,35:POKE DB,34:SYS(VS),80,34,10,110
  109. 920 :
  110. 930 REM  ZEICHENT EIN PAAR TRAUBEN
  111. 940 SYS(SP),8,8,8:
  112. 950 SYS(SP),20,8:SYS(SP),40,8:SYS(SP),12,20:SYS(SP),30,20:SYS(SP),25,16
  113. 960 :
  114. 970 REM ZEICHNET APFEL BESTEHEND AUS 2 RINGEN UND EINEM KUGELFRAGMENT
  115. 980 POKE UB,255:POKE DB,255:POKE LB,255:POKE RB,59
  116. 990 SYS(VT),260,29,0,50:SYS(VT),260,79
  117. 1000 POKE UB,43:POKE DB,43:SYS(SP),260,54,60
  118. 1010 REM   APFELSTIEL ZEICHNEN
  119. 1020 POKE RB,0:POKE DB,0:SYS(TR),272,104,10,15
  120. 1030 REM   BLATT ZEICHNEN
  121. 1040 POKE DB,255:POKE RB,0:SYS(SP),256,119,15
  122. 1050 REM  "RANDOM"-SCHATTIERTES ETTIKETT HINZUFUEGEN !
  123. 1060 POKE UB,255:POKE RB,255:POKE LB,6
  124. 1070 POKE SH,0:SYS(VC),150,72,50,48
  125. 1080 :
  126. 1090 REM  BILD NACHCOLORIEREN
  127. 1100 SYS(CO),12
  128. 1110 X1=200:Y1=1:X2=315:Y2=100:DC=0:BC=2:GOSUB 1700
  129. 1120 X1=240:Y1=110:X2=255:Y2=150:BC=5:GOSUB 1700
  130. 1130 X1=260:Y1=110:X2=270:Y2=135:BC=9:GOSUB 1700
  131. 1140 X1=1:Y1=1:X2=48:Y2=30:BC=4:GOSUB 1700
  132. 1150 X1=140:Y1=205:X2=180:Y2=235:BC=7:GOSUB 1700
  133. 1160 X1=145:Y1=25:X2=195:Y2=115:BC=6:GOSUB 1700
  134. 1170 POKE 198,0:WAIT 198,1:POKE 198,0
  135. 1190 :
  136. 1200 REM   "KAFFEE UND PLAETZCHEN"
  137. 1210 POKE SH,0 :REM RANDOM-SCHATTIERUNG FUER PLAETZCHEN
  138. 1220 SYS(CO),16*11+1:SYS(CL):POKE BO,1
  139. 1230 POKE LB,255:POKE RB,255:POKE UB,255:POKE DB,255 :REM KEIN SHAPE-FENSTER
  140. 1240 SYS(VT),60,20,20,60
  141. 1250 POKE RB,29:SYS(VT),99,60:POKE RB,255
  142. 1260 SYS(TR),188,180
  143. 1270 REM HALBTONSCHATTIERTE KAFFEETASSE HINZUFUEGEN.
  144. 1280 POKE SH,1:POKE UB,0:SYS(VT),188,20:POKE UB,255
  145. 1290 POKE DB,0:SYS(TR),278,110,20,40
  146. 1300 POKE DB,255:POKE UB,0:POKE LB,0
  147. 1310 SYS(TR),248,90,50,70:POKE LB,255:SYS(SP),248,110,10:POKE UB,255
  148. 1320 SYS(VC),308,100,10,10
  149. 1330 SYS(VC),188,77,60,57
  150. 1340 POKE DB,0:SYS(VT),188,134,40,60
  151. 1360 SYS(CO),1+16*9 :REM 1=WEISSER HINTERGRUND, 9=BRAUNE PUNKTE
  152. 1370 X1=130:Y1=1:X2=319:Y2=136:BC=1:DC=5:GOSUB 1700
  153. 1380 X1=250:Y1=144:X2=319:Y2=144:GOSUB 1700
  154. 1390 POKE 198,0:WAIT 198,1:POKE 198,0
  155. 1410 :
  156. 1420 REM  ZEICHNE "VERBUNDENE" RINGE DURCH UEBERLAPPUNG DER FENSTER
  157. 1430 POKE LT,0 :REM BLAUE PUNKTE AUF WEISS, KEINE HINTERGRUNDBELEUTUNG
  158. 1440 SYS(CL):SYS(CO),1+16*6: REM 1=WEISSER INTERGRUND, 6=BLAUE PUNKTE
  159. 1450 POKE UB,255:POKE DB,255:POKE LB,255:POKE RB,255: REM KEINE FENSTER
  160. 1460 POKE SH,0  :REM ZUFAELLIGE SCHATTIERUNG
  161. 1470 SYS(TR),244,84,48,70
  162. 1480 SYS(TR),160,84:SYS(TR),76,84
  163. 1490 SYS(TR),118,156:SYS(TR),202,156
  164. 1500 REM  UEBERLAPPENDE ZONEN HINZUFUEGEN
  165. 1510 POKE RB,0:POKE DB,0:SYS(TR),160,84:POKE RB,255:POKE LB,0
  166. 1520 SYS(TR),76,84:POKE DB,255:POKE UB,0:SYS(TR),118,156
  167. 1530 POKE LB,255:POKE RB,0:SYS(TR),202,156:POKE LB,27
  168. 1540 POKE DB,0:POKE UB,255:SYS(TR),160,84
  169. 1550 POKE DB,0:POKE UB,255:SYS(TR),160,84
  170. 1560 POKE LB,255:POKE UB,27:SYS(TR),244,84
  171. 1570 POKE LB,0:POKE RB,27:POKE UB,255:SYS(TR),244,84
  172. 1580 POKE 198,0
  173. 1590 GET A$:IF A$= "" THEN 1590
  174. 1600 SYS(TX):POKE BO,14:REM RUECKKEHR ZUM TEXTMODUS
  175. 1610 END
  176. 1620 :
  177. 1630 REM UNTERPROGRAMM ZU NACHCOLORIEREN VERSCHIEDENER ZONEN
  178. 1640 REM ACHTUNG: ES KANN JEWEILS NUR EINE RECHTECKIGE FLAECHE
  179. 1650 REM VON 8X8 PUNKTEN EINGEFAERBT WERDEN !!
  180. 1660 REM (X1,Y1)=UNTERER LINKER PUNKT, (X2,Y2)=OBERER RECHTER PUNKT
  181. 1690 REM DIE Y-KOORDINATEN MUESSEN "UNSKALLIERT" SEIN. FALLS SCALE-FLAG GESETZT:
  182. 1700 IF PEEK(SC)THEN Y1=(Y1+1)*213/256:Y2=(Y2+1)*213/256
  183. 1710 REM UEBERGABEVARIABLE IST CC.
  184. 1720 REM CC=16*DC + BC [DC=PUNKT FARBE, BC= HINTERGRUNDFARBE]
  185. 1730 CC=16*DC+BC
  186. 1740 FOR IX=INT(X1/8) TO INT(X2/8)
  187. 1750 FOR IY=INT(Y1/8) TO INT(Y2/8)
  188. 1760 POKE 34752+IX-40*IY,CC
  189. 1770 NEXT:NEXT:RETURN
  190. 1780 :
  191. 1790 REM "TEXT"-UNTERROUTINE ERMOEGLICHT EINFUEGEN VON TEXT IN DIE BILDER.
  192. 1800 REM "RW" UND "CM" SIND DIE ZEILEN(0-24) UND SPALTEN(0-39) KOORDINATEN DES
  193. 1810 REM ERSTEN BUCHSTABEN DES ZU DRUCKENDEN TEXTSTRINGS.
  194. 1820 REM UEBERGABEVARIABLE FUER TEXT IST A$
  195. 1830 REM "MD" ZEIGT DEN DRUCKMODUS AN:
  196. 1840 REM  1 - NORMAL ("SCHWARZE" BUCHSTABEN AUF "WEISSEM" HINTERGRUND)
  197. 1850 REM  2 - INVERSE ("WEISSE" BUCHSTABEN AUF "SCHWARZEM" HINTERGRUND)
  198. 1860 REM  3 - BUCHSTABEN WERDEN MIT LOGISCHEM ODER MIT HINTERGRUND VERKNUEPFT.
  199. 1870 REM  4 - BUCHSTABEN WERDEN MIT LOGISCHEM UND MIT HINTERGRUND VERKNUEPFT.
  200. 1880 REM  5 - BUCHSTABEN WERDEN MIT LOGISCHEM EXOR MIT HINTERGRUND VERKNUEPFT.
  201. 1890 :
  202. 1900 SB=40952:TB=54272:IF(MD AND 1)THEN TB=53248:REM BASISADRESSEN
  203. 1910 OS=320*RW+8*CM:REM  ADRESSE DES ZEICHENGENERATORS
  204. 1920 POKE 56334,PEEK(56334)AND 254:REM DISABLE IRQ TIMER
  205. 1930 POKE 1,PEEK(1)AND 251:REM CHARACTER ROM EINSCHALTEN
  206. 1940 L=LEN(A$):FOR N=1 TO L:N8=N*8+OS+SB
  207. 1950 X=ASC(MID$(A$,N,1)):IF X>63 THEN X=X-64
  208. 1960 TC=TB+8*X
  209. 1970 ON MD GOTO 1980,1980,1990,2000,2010
  210. 1980 POKE 53231,36:GOTO 2020
  211. 1990 POKE 53231,17:GOTO 2020
  212. 2000 POKE 53231,49:GOTO 2020
  213. 2010 POKE 53231,81
  214. 2020 POKE252,N8/256:POKE251,N8-256*INT(N8/256)
  215. 2030 POKE254,TC/256:POKE253,TC-256*INT(TC/256)
  216. 2040 SYS(53221):NEXT
  217. 2050 POKE 1,PEEK(1)OR 4:POKE 56334,PEEK(56334)OR 1:REM NORMAL SCHALTEN
  218. 2060 RETURN
  219.